# XPath 解析 HTML 内容

# 安装 lxml 库：pip3 install lxml
# 安装 requests 库：pip3 install requests

# 导入库
import requests
from lxml import etree

# 要爬的网址
url = "https://www.zongheng.com/"

# 模拟真人浏览器请求头
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
}

# 发送请求
response = requests.get(url, headers=headers)

# 解析 HTML 内容
tree = etree.HTML(response.text)

# 选择要爬取的元素
# 获取 a 标签的文本内容
# /html/body/div[1]/div/section/section/section/section[2]/section[3]/section[2]/div[2]/div[1]/div[2]/p/a/text()
# //*[@id="__layout"]/section/section/section/section[2]/section[3]/section[2]/div[2]/div[1]/div[3]/div/div[1]/p/a[1]/text()
# //section[@class="zh-modules-rank editor-recommend__rank"]//div[@class="zh-modules-rank-box"]//a/text()
# 匹配 section 标签的 class 属性为 zh-modules-rank editor-recommend__rank 的元素下面的所有 div 标签的 class 属性为 zh-modules-rank-box 的元素
elements = tree.xpath('//section[@class="zh-modules-rank editor-recommend__rank"]//div[@class="zh-modules-rank-box"]')

# 遍历提取到的元素列表
for element in elements:
    # 提取标题文本
    # 匹配 a 标签的 class 属性为 global-hover 且文本内容不为 '萧瑾瑜' 的文本内容
    titles = element.xpath(".//a[@class='global-hover' and text() != '萧瑾瑜']/text()")
    # 提取销量
    # 匹配 div 标签的 class 属性为 editor-recommend__rank-text 的文本内容
    nums = element.xpath(".//div[@class='editor-recommend__rank-text']/text()")
    # 合并标题和销量，组成字典
    # 利用 zip 函数将 titles 和 nums 两个列表合并为一个元组列表，再利用 dict 函数将元组列表转换为字典
    sales_volume = dict(zip(titles, nums))
    print(sales_volume)

